import { loginApi, getUserInfoApi, getUserDetailByIdApi } from '@/api/user'
export default {
  // token 加入Vuex
  // 初始化 token 入 Vuex的过程
  namespaced: true,
  state: {
    token: null,
    // 用户资料 维护在vuex
    // 有了接口是直接调用吗 ？？？
    userInfo: null,
    // 保存一下登录token的时间戳
    hrsaasTime: 0
  },
  mutations: {
    setToken(state, token) {
      state.token = token
    },
    removeToken(state) {
      state.token = null
    },
    setUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },
    removeUserInfo(state) {
      state.userInfo = null
    },
    setHrsaasTime(state, time) {
      state.hrsaasTime = time
    }
  },
  // token 来自于哪里
  // 成功登录之后 回返回 token
  actions: {
    // 封装一个登录action
    async loginAction({ commit }, data) {
      const res = await loginApi(data)
      // console.log('res', res) // token 字符串
      // 提起一个 mutation
      commit('setToken', res)
      commit('setHrsaasTime', Date.now())
    },
    // 封装一个 获取userInfo的action
    async getUserInfoAction({ commit }) {
      const res = await getUserInfoApi()
      // 调用 基本详情接口
      const baseRes = await getUserDetailByIdApi(res.userId)
      console.log(baseRes)
      // 提起一个 mutation
      // 在getters 映射 username
      // userInfo = null 兼容一下错误
      commit('setUserInfo', { ...res, ...baseRes })
    },
    logout(context) {
      context.commit('removeToken')
      context.commit('removeUserInfo')
    }
  }
}

